#ifndef __OLED_H__
#define __OLED_H__

#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/fs.h>
#include <linux/cdev.h>
#include <linux/slab.h>
#include <linux/device.h>
#include <linux/uaccess.h>
#include <linux/io.h>
#include <linux/ioport.h>
#include <linux/poll.h>
#include <linux/platform_device.h>
#include <linux/of.h>
#include <linux/of_gpio.h>
#include <linux/interrupt.h>
#include <linux/of_irq.h>
#include <linux/kthread.h>
#include <linux/delay.h>
#include <linux/input.h>
#include <linux/spi/spi.h>
#include <linux/vmalloc.h>
#include <linux/mm.h>
#include <linux/fb.h>
#include <linux/dma-mapping.h>

#define OLED_NUMBER				5
#define OLED_DISPLAY_RAM_SIZE	(8*128)

#define OLED_MAGIC		'O'
#define OLED_UPDATE		_IO(OLED_MAGIC, 0)

struct oled_handle{
	int use_flag;
	int rst_gpio;
	int dc_gpio;
	struct spi_device *spi_device;
	struct task_struct *kthread;
	struct fb_info *fb_info;
	unsigned int pseudo_palette[16];
	uint8_t (*oled_buffer)[128];
	uint8_t (*fb_buffer)[16];
	dma_addr_t phy_addr;
};

#endif
